﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ServiceSATT;
using ApplicationContext;

namespace UI_SATT
{
    public partial class FrmAgregarLocalidades : Form, IListadoPais,IInterfazPais,IListadoProvincia,IInterfazProvincias,IListadoLocalidades,IInterfazLocalidades
    {
        public FrmAgregarLocalidades()
        {
            InitializeComponent();
        }
        string ImplementaUbicacion = "UbicacionService";
        IPaisService PaisService;
        IProvinciaService ProvinciaService;
        ILocalidadService LocalidadService;


        private void FrmAgregarLocalidades_Load(object sender, EventArgs e)
        {
            PaisService = (IPaisService)AppContext.Instance.GetObject(ImplementaUbicacion);
            PaisService.Listado(this);
            ProvinciaService = (IProvinciaService)AppContext.Instance.GetObject(ImplementaUbicacion);
            LocalidadService = (ILocalidadService)AppContext.Instance.GetObject(ImplementaUbicacion);
        }

        #region IListadoPais Members

        public List<string> LstPais
        {
            set 
            { 
                CboListaPaises.DataSource = value;
                CboListaPaises.SelectedIndex = -1;
            }
        }

        #endregion

        private void BtnModificar_Click(object sender, EventArgs e)
        {
            if (CboListaPaises.Text != "")
            {
                if (PaisService.BuscarID(CboListaPaises.Text) ==-1)
                {
                    PaisService.Agregar(this);
                    PaisService.Listado(this);
                    LimpiarCampos();

                }
                else
                {
                    MessageBox.Show("El Pais Que Usted Desea Agregar Ya Existe");
                }

            }
            else
            {
                MessageBox.Show("El Pais No Puede Estar En Blanco");
            }

        }

        #region IInterfazPais Members

        public int idpais
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public string NombrePais
        {
            get
            {
                return CboListaPaises.Text;
            }
            set
            {
                CboListaPaises.SelectedItem = value;
            }
        }

        #endregion

        #region IListadoProvincia Members

        public string Pais
        {
            get { return CboListaPaises.SelectedValue.ToString(); }
        }

        public List<string> LstProvincia
        {
            set { CboListaProvincias.DataSource = value; }
        }

        #endregion

        #region IInterfazProvincias Members

        public int idprovincia
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public string NombreProvincia
        {
            get
            {
               return CboListaProvincias.Text;
            }
            set
            {
                CboListaProvincias.SelectedValue.ToString();
            }
        }

        string IInterfazProvincias.Pais
        {
            get
            {
                return CboListaPaises.SelectedValue.ToString();
            }
            set
            {
                CboListaPaises.SelectedValue = value.ToString();
            }
        }

        #endregion

        private void CboListaPaises_SelectionChangeCommitted(object sender, EventArgs e)
        {
            ProvinciaService.Listado(this);
        }

        private void BtnAgregarProvincia_Click(object sender, EventArgs e)
        {
            if (CboListaProvincias.Text != "")
            {
                if (ProvinciaService.BuscarID(CboListaProvincias.Text) == -1)
                {
                    ProvinciaService.Agregar(this);
                    ProvinciaService.Listado(this);
                    LimpiarCampos();
                }
                else
                {
                    MessageBox.Show("La Provincia Que Usted Quiere Agregar Ya Existe");
                }
            }
            else
            {
                MessageBox.Show("La Provincia No Puede Estar En Blanco");
            }
        }

        private void CboListaProvincias_SelectionChangeCommitted(object sender, EventArgs e)
        {
            LocalidadService.Listado(this);
        }

        #region IListadoLocalidades Members

        public string Provincia
        {
            get { return CboListaProvincias.SelectedItem.ToString(); }
        }

        public List<string> LstLocalidades
        {
            set { CboListaLocalidades.DataSource = value; }
        }

        #endregion

        private void BtnAgregarLocalidad_Click(object sender, EventArgs e)
        {
            if (CboListaLocalidades.Text == "")
            {
                MessageBox.Show("La Localidad No Puede Estar En Blanco");
            }
            else
            {
                if (LocalidadService.BuscarID(CboListaLocalidades.Text.ToString()) == -1)
                {
                    LocalidadService.Agregar(this);
                    LocalidadService.Listado(this);
                    LimpiarCampos();
                }
            
            }

        }

        #region IInterfazLocalidades Members

        public int IdLocalidad
        {
            get
            {
                throw new NotImplementedException();
            }
            set
            {
                throw new NotImplementedException();
            }
        }

        public string NombreLocalidad
        {
            get
            {
                return CboListaLocalidades.Text;
            }
            set
            {
                CboListaLocalidades.SelectedValue = value;
            }
        }

        string IInterfazLocalidades.Provincia
        {
            get
            {
              return  CboListaProvincias.SelectedItem.ToString();
            }
            set
            {
                CboListaProvincias.SelectedItem=value;
            }
        }

        #endregion

        private void BtnCerrar_Click(object sender, EventArgs e)
        {
            this.DialogResult = DialogResult.OK;
               this.Close();
        }

        private void LimpiarCampos()
        {
            CboListaProvincias.SelectedIndex = -1;
            CboListaPaises.SelectedIndex = -1;
            CboListaLocalidades.SelectedIndex = -1;
        }
    }
}
